import multiprocessing
import queue

# 生产者函数
def producer(q):
    for i in range(5):
        print(f"生产者放入数据: {i}")
        q.put(i)

# 消费者函数
def consumer(q):
    while True:
        item = q.get()
        if item is None:
            break
        print(f"消费者取出数据: {item}")
        q.task_done()

if __name__ == "__main__":
    # 创建一个队列
    q = multiprocessing.Manager().Queue()

    # 创建进程池
    with multiprocessing.Pool(processes=4) as pool:  # 可以根据需要调整进程池的大小，这里设置为4，
        # 启动生产者和消费者进程
        result1 = pool.apply_async(producer, (q,))
        result2 = pool.apply_async(consumer, (q,))

        # 等待生产者进程完成
        result1.wait()



        # 向队列中放入一个 None 作为结束信号
        q.put(None)

        # 等待消费者进程完成
        result2.wait()

    print("所有任务完成")

